package com.atguigu.common.exception;

/***
 * 错误码和错误信息定义类
 * 1. 错误码定义规则为5为数字
 * 2. 前两位表示业务场景，最后三位表示错误码。例如：100001。10:通用 001:系统未知异常
 * 3. 维护错误码后需要维护错误描述，将他们定义为枚举形式
 * 错误码列表：
 * 10: 通用
 * 001：参数格式校验
 * 11: 商品
 * 12: 订单
 * 13: 购物车
 * 14: 物流
 * 15: 用户
 *
 */
/*
* 枚举类和普通类的区别
* 1、构造方法私有（枚举是经典的单例模式）
* 2、第一行（第一个分号前都算第一行）罗列所有枚举对象，实际上就是此枚举类的多个实例
* 3、一般不提供set方法：经测试，如果提供了set方法，是可以通过类似的方式来修改枚举对象的
* */
public enum BizCodeEnum {
    UNKNOWN_EXCEPTION(10000,"系统未知异常"),
    VALID_EXCEPTION(10001,"参数格式校验失败"),
    SMS_CODE_EXCEPTION(10002,"验证码获取频率太高，请稍后再试"),
    PRODUCT_UP_EXCEPTION(11000,"商品上架异常"),
    USER_ALREADY_EXIST_EXCEPTION(15001,"用户已存在"),
    PHONE_ALREADY_EXIST_EXCEPTION(15002,"手机号已存在"),
    ACCOUNT_PASSWORD_INVALID_EXCEPTION(15003,"账号或密码不正确"),
    ORDER_TOKEN_INVALID_EXCEPTION(12001,"订单防重复提交token无效"),
    ORDER_PRICE_COMPARE_EXCEPTION(12002,"订单页面价格与后台计算价格不一致"),
    ORDER_NO_STOCK_EXCEPTION(12003,"库存不足");


    private int code;
    private String msg;

    BizCodeEnum(int code,String msg) {
        this.code = code;
        this.msg = msg;
    }

    public int getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }
//    public void setCode(int code) {
//        this.code = code;
//    }
//
//    public void setMsg(String msg) {
//        this.msg = msg;
//    }
}
